//package com.kl.config;
//
//import at.pollux.thymeleaf.shiro.dialect.ShiroDialect;
//import com.kl.shiro.LoginRealm;
//import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
//import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
//import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.stereotype.Controller;
//
//import java.util.LinkedHashMap;
//import java.util.Map;
//
//@Configuration
//public class ShiroConfig {
//
//    //将shiro的过滤器链放入spring容器中
//    @Bean
//    public ShiroFilterFactoryBean shiroFilterFactoryBean(@Autowired DefaultWebSecurityManager defaultWebSecurityManager){
//        //创建过滤器链工厂类
//        ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
//        //添加shirp 内置的过滤器
//        //anon : 不需要登录就可以访问
//        //authc : 必须登录才能访问
//        //perms : 登录之后还要有权限才能访问
//        //role : 登录之后要有角色才可以访问
//        //logout : 退出登录
//
//        Map<String,String> filterMap = new LinkedHashMap<>();
//        //key 是我们的url , value就是我们设置的url所对应的过滤器
////        filterMap.put("/myShop/toHome","authc");
////        filterMap.put("/cart/settleAccounts","authc");
//        filterMap.put("/**","prems[A]");
//
//        filterMap.put("/login/toLogin","prems[A]");
//        filterMap.put("/login/toLogin","prems[B]");
//
//
//
//        //退出登录  /logout 路径不需要自己写的,是直接可以用的
//        filterMap.put("/logout","logout");
//
//
//
//        //shiro 默认登录页面为login.jsp ,我们springboot不支持jsp页面 ,所有我们需要修改跳转登录
////        factoryBean.setLoginUrl("/login/toLogin");
//        //跳转错误页面
////        factoryBean.setUnauthorizedUrl("/login/toLogin");
//
//        //设置安全管理器 DI
//        factoryBean.setSecurityManager(defaultWebSecurityManager);
//        factoryBean.setFilterChainDefinitionMap(filterMap);
//
//        return factoryBean;
//
//    }
//
//    //将安全管理器放入spring容器
//    @Bean
//    public DefaultWebSecurityManager defaultWebSecurityManager(@Autowired LoginRealm loginRealm){
//        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
//        //关联我们自定义的realm类
//        securityManager.setRealm(loginRealm);
//        return securityManager;
//    }
//
//    @Bean
//    public LoginRealm loginRealm(@Autowired HashedCredentialsMatcher hashedCredentialsMatcher){
//        LoginRealm loginRealm = new LoginRealm();
//        //将加密方式关联我们自定义的realm类
//        loginRealm.setCredentialsMatcher(hashedCredentialsMatcher);
//        return loginRealm;
//    }
//
//    //设置密码加密
//    @Bean
//    public HashedCredentialsMatcher hashedCredentialsMatcher(){
//        HashedCredentialsMatcher matcher = new HashedCredentialsMatcher();
//        //指定加密方式
//        matcher.setHashAlgorithmName("MD5");
//        //设置加密的次数
//        matcher.setHashIterations(3);
//        //使用设置编码
//        matcher.setStoredCredentialsHexEncoded(true);
//        return matcher;
//    }
//
//
//}
